package ar.com.psicosoft.model.psicosoft_datos_anexos;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Time;
import java.util.List;

/**
 * The persistent class for the departamento database table.
 * 
 */
@Entity
@Table(name = "departamento", schema = "psicosoft_datos_anexos")
@NamedQuery(name = "Departamento.findAll", query = "SELECT d FROM Departamento d")
public class Departamento implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "sec_departamento", sequenceName = "psicosoft_datos_anexos.sec_departamento")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec_departamento")
	@Column(name = "\"idDepartamento\"", unique = true, nullable = false)
	private Integer idDepartamento;

	private Time baja;

	@Column(name = "\"idProvincia\"", nullable = false)
	private Integer idProvincia;

	@Column(name = "\"nombreDepartamento\"", nullable = false, length = 50)
	private String nombreDepartamento;

	// bi-directional many-to-one association to CodigoPostalCf
	@OneToMany(mappedBy = "departamento")
	private List<CodigoPostalCf> codigoPostalCfs;

	// bi-directional many-to-one association to Comuna
	@OneToMany(mappedBy = "departamento")
	private List<Comuna> comunas;

	// bi-directional many-to-one association to Provincia
	@ManyToOne
	@JoinColumn(name = "\"idProvincia\"", insertable = false, updatable = false)
	private Provincia provincia;

	// bi-directional many-to-one association to Localidad
	@OneToMany(mappedBy = "departamento")
	private List<Localidad> localidads;

	public Departamento() {
	}

	public Integer getIdDepartamento() {
		return this.idDepartamento;
	}

	public void setIdDepartamento(Integer idDepartamento) {
		this.idDepartamento = idDepartamento;
	}

	public Time getBaja() {
		return this.baja;
	}

	public void setBaja(Time baja) {
		this.baja = baja;
	}

	public Integer getIdProvincia() {
		return this.idProvincia;
	}

	public void setIdProvincia(Integer idProvincia) {
		this.idProvincia = idProvincia;
	}

	public String getNombreDepartamento() {
		return this.nombreDepartamento;
	}

	public void setNombreDepartamento(String nombreDepartamento) {
		this.nombreDepartamento = nombreDepartamento;
	}

	public List<CodigoPostalCf> getCodigoPostalCfs() {
		return this.codigoPostalCfs;
	}

	public void setCodigoPostalCfs(List<CodigoPostalCf> codigoPostalCfs) {
		this.codigoPostalCfs = codigoPostalCfs;
	}

	public CodigoPostalCf addCodigoPostalCf(CodigoPostalCf codigoPostalCf) {
		getCodigoPostalCfs().add(codigoPostalCf);
		codigoPostalCf.setDepartamento(this);

		return codigoPostalCf;
	}

	public CodigoPostalCf removeCodigoPostalCf(CodigoPostalCf codigoPostalCf) {
		getCodigoPostalCfs().remove(codigoPostalCf);
		codigoPostalCf.setDepartamento(null);

		return codigoPostalCf;
	}

	public List<Comuna> getComunas() {
		return this.comunas;
	}

	public void setComunas(List<Comuna> comunas) {
		this.comunas = comunas;
	}

	public Comuna addComuna(Comuna comuna) {
		getComunas().add(comuna);
		comuna.setDepartamento(this);

		return comuna;
	}

	public Comuna removeComuna(Comuna comuna) {
		getComunas().remove(comuna);
		comuna.setDepartamento(null);

		return comuna;
	}

	public Provincia getProvincia() {
		return this.provincia;
	}

	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

	public List<Localidad> getLocalidads() {
		return this.localidads;
	}

	public void setLocalidads(List<Localidad> localidads) {
		this.localidads = localidads;
	}

	public Localidad addLocalidad(Localidad localidad) {
		getLocalidads().add(localidad);
		localidad.setDepartamento(this);

		return localidad;
	}

	public Localidad removeLocalidad(Localidad localidad) {
		getLocalidads().remove(localidad);
		localidad.setDepartamento(null);

		return localidad;
	}

}